# coding:utf-8
import sys
from flask import Flask
from flask.ext.bootstrap import Bootstrap
from flask.ext.mail import Mail
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.login import LoginManager
from flask.ext.moment import Moment
from flask.ext.pagedown import PageDown
from config import config

bootstrap = Bootstrap()
mail = Mail()
db = SQLAlchemy()
login_manager = LoginManager()
moment = Moment()
pagedown = PageDown()


def create_app(config_name):
    app = Flask(__name__)

    # 设置编码
    if sys.version_info.major < 3:
        reload(sys)
    sys.setdefaultencoding('utf8')

    app.config.from_object(config[config_name])
    config[config_name].init_app(app)

    bootstrap.init_app(app)
    mail.init_app(app)
    db.init_app(app)
    login_manager.init_app(app)
    moment.init_app(app)
    pagedown.init_app(app)

    login_manager.session_protection = 'strong'
    login_manager.login_view = 'auth.login'

    from project.main import main as main_blueprint
    app.register_blueprint(main_blueprint)

    from project.auth import auth as auth_blueprint
    app.register_blueprint(auth_blueprint)

    return app
